//
//  DDInterviewReply.m
//  DingDongZP
//
//  Created by 杨政涛 on 16/10/31.
//  Copyright © 2016年 51ledian.com. All rights reserved.
//

#import "DDInterviewReply.h"

@implementation DDInterviewReply

- (instancetype)initWithInterviewReplyType:(DDInterviewReplyType)interviewReplyType InterviewResultType:(DDInterviewResultType)interviewResultType
{
    if (self = [super init]) {
        self.interviewReplyType = interviewReplyType;
        self.interviewResultType = interviewResultType;
    }
    return self;
}

/*!
 将消息内容序列化，编码成为可传输的json数据
 
 @discussion 消息内容通过此方法，将消息中的所有数据，编码成为json数据，返回的json数据将用于网络传输。
 */
- (NSData *)encode
{
    NSMutableDictionary *data = [NSMutableDictionary new];

    data[@"content"] = self.content;

    data[@"type"] = @(self.interviewReplyType);
    data[@"result"] = @(self.interviewResultType);
    data[@"bossName"] = self.bossName;
    data[@"cattleName"] = self.cattleName;

    return [NSJSONSerialization dataWithJSONObject:data options:0 error:nil];
}

/*!
 将json数据的内容反序列化，解码生成可用的消息内容
 
 @param data    消息中的原始json数据
 
 @discussion 网络传输的json数据，会通过此方法解码，获取消息内容中的所有数据，生成有效的消息内容。
 */
- (void)decodeWithData:(NSData *)data
{
    NSError *err;
    NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:data options:0 error:&err];
    if (err) {
        //        NSLog(@"err: %@", err);
        return;
    }
    
    self.content = jsonData[@"content"];

    
    NSData *jsonData_Content = [self.content dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData_Content
                                                        options:NSJSONReadingMutableContainers
                                                          error:&err];
    if(err) {
        return ;
    }
    
    self.interviewReplyType = [dic[@"type"] integerValue];
    self.interviewResultType = [dic[@"result"] integerValue];
    self.bossName = dic[@"bossName"];
    self.cattleName = dic[@"cattleName"];
}

/*!
 返回消息的类型名
 
 @return 消息的类型名
 
 @discussion 您定义的消息类型名，需要在各个平台上保持一致，以保证消息互通。
 
 @warning 请勿使用@"RC:"开头的类型名，以免和SDK默认的消息名称冲突
 */
+ (NSString *)getObjectName {
    return NSStringFromClass(self);
}

/*!
 返回消息的存储策略
 
 @return 消息的存储策略
 
 @discussion 指明此消息类型在本地是否存储、是否计入未读消息数。
 */
+ (RCMessagePersistent)persistentFlag
{
    return MessagePersistent_ISCOUNTED;
}

- (NSString *)conversationDigest
{
    
    if (self.interviewReplyType == DDSendInterview) {
        
        return @"发起面试邀请";
    }
    
    if (self.interviewReplyType == DDReplayInterview) {
        
        
        if (self.interviewResultType == DDInterviewResultRefuse) {
            
            return @"拒绝面试邀请";
        }
        
        if (self.interviewResultType == DDInterviewResultAgree) {
            
            return @"同意面试邀请";
        }
    }
   
    return @"";
}

@end
